package org.lanqiao.tjut.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.lanqiao.tjut.bean.UsersEntity;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class UserLoginedInterceptor implements HandlerInterceptor {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		/*
		 *  在prehandle方法中，使用返回值进行拦截处理：
		 *  返回false -- 进行拦截；
		 *  返回true -- 放行，进入后续的拦截器或controller
		 */
		// 对于登录请求的url连接进行识别，并允许其通过拦截器
		// 注意：这里由于是使用url进行识别，所以在编程中需要将登陆的请求url名和
		// 和非登录的请求url名进行人为区别
		if(request.getRequestURI().contains("user/login.do")){
			//检测出是登陆请求，进行放行
			return true;
		}
		
		/*
		 * 非登录请求：
		 * 获取当前请求sesion中是否缓存了用户登录信息
		 * 如果缓存了用户登录信息，则进行放行，
		 * 否则，准会登录页面，进行拦截
		 */
		
		// 取出session缓存中的用户信息
		UsersEntity userE = (UsersEntity) request.getSession().getAttribute("LoginedUserInfo");
		if (userE != null && userE.getUsername() != null && !userE.getUsername().equals("")) {
			// 用户信息验证成功
			// 放行
			return true;
		} else {
			// 用户验证失败，进行拦截
			// 跳转回登录页面
			// 转发
			//request.getRequestDispatcher("index").forward(request, response);
			// 重定向
			response.sendRedirect("../index.jsp");
			return false;
		}
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO Auto-generated method stub

	}

}
